package cn.edu.gzhu.workOrderManagement.pojo.dto.workOrder;

import cn.edu.gzhu.workOrderManagement.enumeration.WorkOrderProcessingStatusEnum;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.format.annotation.DateTimeFormat;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import java.time.LocalDate;


@AllArgsConstructor
@Data
@NoArgsConstructor
@Builder
public class WorkOrderListDto {

    /**
     * 唯一表示符，对外展示
     */
    private String uuid;

    /**
     * 创建时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate createTime;

    /**
     * 更新时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate updateTime;
    /**
     * 工单请求者，用户输入
     */
    private String requestUser;

    /**
     * 工单请求者的身份证，用户输入
     */
    private String requestIdCard;

    /**
     * 逻辑卡号，用户输入
     */
    private String logicalCardNumber;

    /**
     * 案件号，用户输入
     */
    private String caseNumber;

    /**
     *工单类型，使用WorkOrderTypeConstant
     */

    private String type;

    /**
     * 工单类别，用户输入
     */
    private String category;

    /**
     * 跟进状态,使用WorkOrderFollowStatus
     */

    private String followStatus;


    /**
     * 工单预警级别，使用WorkOrderAlertLevelConstant
     */
    private Integer alertLevel;

    /**
     * 是否为监管投诉，用户输入
     */
    private Boolean isRegulatoryComplaint;

    /**
     * 地区，用户输入
     */
    private String region;

    /**
     * 经办人,用户输入
     */
    private String handler;

    /**
     * 经理，用户输入
     */
    private String manager;

    /**
     * 组别,用户输入
     */
    private String teamCategory;

    /**
     * 工单状态
     */
    private WorkOrderProcessingStatusEnum processingStatus;

    /**
     * 工单实际结束时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate endTime;


    /**
     * 处理者的用户名
     */
    private String targetUser;

    /**
     * 工单标题
     */
    private String title;

    /**
     * 是否存在敏感字眼
     */
    private Boolean isSensitive;

    /**
     * 目标处理机构
     */
    private String targetOrganization;

    /**
     * 工单预期完成时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private LocalDate expectedEndTime;

    /**
     * 开始页数
     */
    @NotNull
    @Min(value = 1)
    private Integer startPage;
    /**
     * 分页大小
     */
    @NotNull
    @Max(value = 50)
    private Integer pageSize;

    /**
     * 是否需要工单细节，决定返回的是WorkOrderListVo还是WorkOrderDetailVo
     */
    @NotNull
    private Boolean needDetails;
}
